package com.ruike.alisurface.utils;

import com.voodoo.lib_utils.L;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * Author: voodoo
 * CreateDate: 2020-03-27 027 下午 04:03
 * Description: 时间有关工具类
 */
public class TimeUtils {

    /**
     * 将时间戳转换为时间字符串
     * <p>time格式为yyyy-MM-dd HH:mm:ss</p>
     *
     * @param millis 时间戳
     * @return 默认格式的时间字符串
     */
    public static String millis2String(long millis) {
        return millis2String(millis, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 将时间戳转换为时间字符串
     *
     * @param millis  时间戳
     * @param pattern 指定时间格式
     * @return 指定格式的时间字符串
     */
    public static String millis2String(long millis, String pattern) {
        return new SimpleDateFormat(pattern, Locale.getDefault()).format(new Date(millis));
    }

    /**
     * 将时间字符串转为时间戳
     * <p>time格式为yyyy-MM-dd HH:mm:ss</p>
     *
     * @param time 时间字符串
     * @return 毫秒时间戳
     */
    public static long string2Millis(String time) {
        return string2Millis(time, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 将时间字符串转为时间戳
     *
     * @param time    时间字符串
     * @param pattern 时间格式
     * @return 毫秒时间戳
     */
    public static long string2Millis(String time, String pattern) {
        try {
            return new SimpleDateFormat(pattern, Locale.getDefault()).parse(time).getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return -1;
    }
    /***
     * 获取当前日期距离过期时间的日期差值
     * @param startTime
     * @return  返回分钟
     */
    public static long dateDiff(String startTime) {
        long strTime = 0;
        // 按照传入的格式生成一个simpledateformate对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
        long nh = 1000 * 60 * 60;// 一小时的毫秒数
        long nm = 1000 * 60;// 一分钟的毫秒数
        long ns = 1000;// 一秒钟的毫秒数
        long diff;
        long day = 0;
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        String nowtime = simpleDateFormat.format(curDate);
        try {
            // 获得两个时间的毫秒时间差异
            diff = simpleDateFormat.parse(nowtime).getTime() - simpleDateFormat.parse(startTime).getTime();
            day = diff / nd;// 计算差多少天
            long hour = diff % nd / nh;// 计算差多少小时
            long min = diff % nd % nh / nm;// 计算差多少分钟
            long sec = diff % nd % nh % nm / ns;// 计算差多少秒
            // 输出结果
            L.i("现在时间差异：时" + hour + "==分==" + min + "=秒=" + sec);

            strTime = min;
            return strTime;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return strTime;
    }
}
